﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Crosland.Automotriz.Logic.Linq;
using System.Net.Mail;
using Crosland.Automotriz.Facade.Facade;
using Crosland.Automotriz.Facade.Interface;
using System.Configuration;
using DevExpress.Web.ASPxEditors;
using Crosland.Automotriz.Core;
using Crosland.Automotriz.Seguridad.Entity;
using Crosland.Automotriz.Seguridad.DataAccess;
using Crosland.Automotriz.Seguridad.Business;


namespace Crosland.Automotriz.Web.Vehiculos
{
    public partial class wFrmCompensacionVehiculoNuevo : BaseForm
    {
        iFacadeCompensacionVehiculo BL_CompensacionVehiculo = new FacadeCompensacionVehiculo();
        clsUsuarioLogic usu = new clsUsuarioLogic();

        protected override void Inicializar()
        {
            CargarBancos();
            ddlCtaCorriente.Items.Insert(0, new ListEditItem("-Seleccione-", ""));
            CargarClaseFactura();
            deFecOperacion.Date = DateTime.Today;

            //Carga el tipo de cambio de la fecha de operacion
            CargarTipoCambio();

        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Response.Redirect("/Vehiculos/wFrmCompensacionVehiculo.aspx?id=3&sub=35");
        }

        protected void CargarBancos()
        {
            ddlBanco.DataSource = BL_CompensacionVehiculo.ListarBancos();
            ddlBanco.DataBind();
            ddlBanco.Items.Insert(0, new ListEditItem("-Seleccione-", "0"));
            ddlBanco.Items[0].Selected = true;

        }

        protected void CargarCuentaCorriente(int idBanco)
        {
            ddlCtaCorriente.DataSource = BL_CompensacionVehiculo.ListarCtaCorriente(idBanco);
            ddlCtaCorriente.DataBind();
            ddlCtaCorriente.Items.Insert(0, new ListEditItem("-Seleccione-", ""));
            ddlCtaCorriente.Items[0].Selected = true;
        }

        protected void CargarClaseFactura()
        {
            ddlTipoDoc.DataSource = BL_CompensacionVehiculo.ListarClaseFactura();
            ddlTipoDoc.DataBind();
            ddlTipoDoc.Items.Insert(0, new ListEditItem("-Seleccione-", ""));
            ddlTipoDoc.Items[1].Selected = true;

        }

        protected void ddlBanco_SelectedIndexChanged(object sender, EventArgs e)
        {
            CargarCuentaCorriente(Convert.ToInt32(ddlBanco.Value));
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            CargarBusquedaCliente();
        }

        protected void CargarBusquedaCliente()
        {
            grdClientes.FocusedRowIndex = -1;
            grdClientes.DataSource = BL_CompensacionVehiculo.ListarClientes(txtCliente.Text);
            grdClientes.DataBind();
            txtCliente.Focus();

        }

        protected void grdClientes_PageIndexChanged(object sender, EventArgs e)
        {
            CargarBusquedaCliente();
        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            int id = Convert.ToInt32(grdClientes.GetRowValues(grdClientes.FocusedRowIndex, "ID_CLIENTE"));
            string cliente = grdClientes.GetRowValues(grdClientes.FocusedRowIndex, "DES_CLIENTE").ToString();
            lblIdCliente.Text = id.ToString();
            lblCliente.Text = cliente;
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            T_SEG_USUARIO usuario = usu.listarUser(Session[DatosSesion.User].ToString())[0];

            if (!String.IsNullOrEmpty(lblCliente.Text))
            {
                if (ddlBanco.SelectedIndex > 0)
                {
                    if (ddlCtaCorriente.SelectedIndex > 0)
                    {

                        if (!String.IsNullOrEmpty(txtNroOperacion.Text))
                        {

                            if (!String.IsNullOrEmpty(txtImporte.Text))
                            {
                                if (ddlTipoDoc.SelectedIndex > 0)
                                {
                                    DateTime fecha = Convert.ToDateTime(deFecOperacion.Value);
                                    decimal tipoCambio = BL_CompensacionVehiculo.TipoCambio(fecha);

                                    if (tipoCambio > 0)
                                    {
                                        T_TES_CAJA entity = new T_TES_CAJA();

                                        List<T_MAE_MONEDA> ListaMoneda = new List<T_MAE_MONEDA>();


                                        entity.ID_CLIENTE = Convert.ToInt32(lblIdCliente.Text);
                                        entity.ID_USUARIO = usuario.ID_USUARIO;
                                        entity.ID_BANCO_CUENTA = Convert.ToInt32(ddlCtaCorriente.Value);
                                        entity.ID_TIPO_DOCUMENTO = Convert.ToInt32(ddlTipoDoc.Value);
                                        entity.FEC_OPERACION = Convert.ToDateTime(deFecOperacion.Value);
                                        entity.NUM_OPERACION = txtNroOperacion.Text;
                                        entity.IMP_MONTO = Convert.ToDecimal(txtImporte.Text);
                                        entity.IMP_TIPO_CAMBIO = Convert.ToDecimal(lblTipoCambio.Text);

                                        string glosa = txtGlosa.Text;
                                        ListaMoneda = BL_CompensacionVehiculo.MonedaXCta(entity.ID_BANCO_CUENTA);

                                        entity.ID_MONEDA = ListaMoneda[0].ID_MONEDA;

                                        if (BL_CompensacionVehiculo.GuardarCaja(entity, glosa))
                                        {
                                            string script = "ShowExito();";
                                            ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                                        }
                                        else
                                        {
                                            string script = "ShowError();";
                                            ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                                        }

                                        Nuevo();

                                    }
                                    else
                                    {
                                        lblValidacion.Text = "El tipo de cambio debe ser mayor a 0.";
                                        string script = "ShowValidacion();";
                                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                                    }

                                }
                                else
                                {
                                    lblValidacion.Text = "Seleccione un tipo de documento!.";
                                    string script = "ShowValidacion();";
                                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                                }

                            }
                            else
                            {
                                lblValidacion.Text = "Ingrese un importe de deposito!.";
                                string script = "ShowValidacion();";
                                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                            }

                        }
                        else
                        {
                            lblValidacion.Text = "Ingrese un numero de operación!.";
                            string script = "ShowValidacion();";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                        }
                    }
                    else
                    {
                        lblValidacion.Text = "Seleccione una cuenta corriente!.";
                        string script = "ShowValidacion();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                    }

                }
                else
                {
                    lblValidacion.Text = "Seleccione un banco!.";
                    string script = "ShowValidacion();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }

            }
            else
            {
                lblValidacion.Text = "Seleccione un cliente!.";
                string script = "ShowValidacion();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
            }

        }

        protected void deFecOperacion_DateChanged(object sender, EventArgs e)
        {
            CargarTipoCambio();

        }

        protected void CargarTipoCambio()
        {
            try
            {
                DateTime fecha = Convert.ToDateTime(deFecOperacion.Value);
                decimal TipoCambio = BL_CompensacionVehiculo.TipoCambio(fecha);
                lblTipoCambio.Text = TipoCambio.ToString("n3");
            }
            catch (Exception ex)
            {
                lblValidacion.Text = "Error al obtener el tipo cambio : " +ex.Message;
                popupValidacion.ShowOnPageLoad = true;
                return;               
            }
         
        }



        protected void Nuevo()
        {
            btnGuardar.Enabled = true;
            btnBuscarCliente.Enabled = true;
            ddlBanco.Enabled = true;
            ddlTipoDoc.Enabled = true;
            txtImporte.Enabled = true;
            ddlCtaCorriente.Enabled = true;
            txtNroOperacion.Enabled = true;
            deFecOperacion.Enabled = true;
            txtGlosa.Enabled = true;

            ddlBanco.SelectedIndex = 0;
            ddlTipoDoc.SelectedIndex = 1;
            txtImporte.Text = string.Empty;
            ddlCtaCorriente.SelectedIndex = 0;
            txtNroOperacion.Text = string.Empty;
            txtGlosa.Text = string.Empty;
            lblCliente.Text = string.Empty;
            lblIdCliente.Text = string.Empty;
            deFecOperacion.Date = DateTime.Today;
            txtCliente.Text = string.Empty;

            DateTime fecha = Convert.ToDateTime(deFecOperacion.Value);
            decimal TipoCambio = BL_CompensacionVehiculo.TipoCambio(fecha);
            lblTipoCambio.Text = TipoCambio.ToString("n3");
        }


    }
}